#ifndef INCL_DCM_GenericCellStateChars_H
#define INCL_DCM_GenericCellStateChars_H

#include "cell/CellStateChar.h"
#include "cell/CellState.h"

template<char ALIVE_CHAR, char DEAD_CHAR>
struct GenericCellStateChars : CellStateChars
{
    OVERRIDE(char getAliveChar() const) {return ALIVE_CHAR;}
    OVERRIDE(char getDeadChar() const) {return DEAD_CHAR;};
    OVERRIDE(CellState getState(char state) const)
    {
        static CellState states[] = {DEAD, ALIVE};
        return states[ALIVE_CHAR == state];
    };
};

static GenericCellStateChars<'1', '0'> input_chars;
static GenericCellStateChars<1, 0> ft_chars;
static GenericCellStateChars<'$', ' '> output_chars;

#endif
